File:  of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text) 

P-1&XLISTX
IFDEF FPP <
/FPP PARAMETER TABLE LOCATIONS:

DFLG,	0		/0 = F.P., 1 = D.P., -3 = E.P.
ADRHI,	0		/UPPER 3 BITS OF ADRESSES
BASHI,	0
XRHI,	0
PCHI,	0
PC,	0		/FPP PROGRAM COUNTER
XRBASE,	0		/FPP INDEX REGISTER ARRAY ADDRESS
BASADR,	0		/FPP BASE PAGE ADDRESS
ADRLOW,	0		/FPP INSTRUCTION OPERAND ADDRESS
ACX,	0		/EXP OF FAC
ACSGN,	0		/SIGN OF FAC -1:NEG 0:ZERO +1:POS
XRPNT,	0		/POINTER TO XR REG IN USE
INDX,	0		/BITS 6-8 OF INSTRUCTION
AUTO,	0		/BIT 5    OF INSTRUCTION
		/ >
PAGE
XLIST -LRESMOD-1&XLISTX
IFDEF KL8E2 <KL8XX=1>
IFDEF KL8A1 <KL8XX=1>
IFDEF KL8XX <			/REENTRANT VERSION

/DEFINITIONS OF OFFSETS !MUST BE IN THIS ORDER!
	NOPUNCH
	DOTF10=.
	*0
	TTCHAR,.
	TTEVNT,.
	TTRET,.
	TTTLS,.
	TTSAV,.
IFDEF KL8A1 <
	TTLINE,. >
	TTCOUNT,.
	TTFCHR,.
	TTFILL,.
	TTTMP,.
	TTBACK,.
	*DOTF10
	ENPUNCH
TT,	SNA
	 JMP TT3	/AC=0: TAKE IMMEDIATE EXIT
	DCA ZTEM1
	JMS SETBASE	/INITIALISE 'BASE' WITH POINTER TO TTY LIST
	TAD ZTEM1
	DCA I BASE	/STORE USERS AC IN TTCHAR
	TAD ZTEM1
	AND C177	/STRIP PARITY
	TAD (-11
	SNA		/TAB ?
	 JMP TTTAB	/YES, GO EXPAND THE TAB CHARACTER
	IAC
	SZA CLA		/BACKSPACE ?
	 JMP TT0	/NO
	JMS GET		/BACKUP POSITION COUNTER
	  TTCOUNT
	TAD M1
	DCA I X		/
	JMS GET		/YES GET ALTERNATE BACKSPACE
	   TTBACK
TT0,	TAD ZTEM1
	JMS TTOUT	/NOT TAB, PRINT THE CHARACTER
TT1,	ISZ X		/TTFCHR AFTER TTCOUNT
	TAD I X		/GET MINUS THE FILLCHARACTER
	SNA		/ANY FILLERS NEEDED ?
	 JMP TT2	/NO
	TAD I BASE	/GET THE USERS CHARACTER
	AND C177	/STRIP PARITY
	SNA CLA		/FILLCHARACTERS NEEDED ?
	 JMP TTFLL	/YES, GO THERE
TT2,	TAD I BASE	
	SMA CLA		/EXIT OR RETURN ?
	 JMP TT3
	JMS MONITOR
	   RETURN
/TT3,	JMS MONITOR	/SEE AT KK2
/	   EXIT
TTTAB,	TAD C240	/EXPAND A TAB...
	JMS TTOUT	/START WITH ONE SPACE
	TAD I X		/JMS GET
			/   TTCOUNT
	AND C7		/ARE WE AT TAB POSITION ?
	SZA CLA
	 JMP TTTAB	/NOT YET
	JMP TT1		/DONE
TTFLL,	ISZ X		/TTFILL AFTER TTFCHR
	TAD I X		/GET THE DESIRED FILLCOUNT
	ISZ X		/TTTMP AFTER TTFILL
	SNA
	 JMP TT2	/ZERO=NONE
	DCA I X		/STORE IN TTTMP
	ACM1
	JMS TTOUT	/OUTPUT A RUBOUT
	ISZ X		/TO TTFCHR
	ISZ X		/TO TTFILL
	ISZ X		/TO TTTMP
	TAD I X
	IAC
	JMP TTFLL+3	/SEE IF DONE

TTOUT,	0		/SUBROUTINE TO OUTPUT ONE CHARACTER
	JMS PUT		/SAVE THE CHARACTER
	   TTSAV
	JMS GET
	   TTEVNT	/GET THE EVENT NUMBER
	DCA TTOUT1
	ISZ X		/TTRET AFTER TTEVNT
	TAD TTOUT	/SAVE RETURNADDRESS IN TTYLIST
	DCA I X		/IN TTRET
	TAD (-DGNTICK	/ONE SECOND TIMEOUT KEEPS SYSTEM GOING
	JMS MONITOR
	   WAIT
TTOUT1,	   0
	JMS SETBASE	/RELOAD BASE REGISTER
	JMS GET
	   TTRET	/FETCH RETURN ADDRESS
	DCA TTOUT
	ISZ X		/TTTLS AFTER TTRET
	TAD I X		/GET PROPPER TLS INSTRUCTION
	DCA TTOUT2
	ISZ X		/TTSAV AFTER TTTLS
	TAD I X		/GET THE CHARACTER TO BE PRINTED
IFDEF KL8A1 <
	ISZ X		/TTLINE AFTER TTSAV
	TAD I X		/GET LINENUMBER^400 >
	ISZ X		/POSITION TTCOUNT AFTER TTLINE
TTOUT2,	HLT		/WILL BECOME A TLS
	AND C177
	TAD (-40
	SMA		/CONTROL-CHAR ?
	 ISZ I X	/NO, COUNT IT
	NOP
	TAD (40-12	
	SZA		/WAS IT LINEFEED ?
	 TAD M3		/(12-15
	SNA CLA		/WAS IT CR ?
	 DCA I X	/YES, RESET POSITION COUNTER
	JMP I TTOUT	/RETURN WITH X AT TTCOUNT >

IFNDEF KL8XX <	/NON-REENTRANT VERSION-

TT,	SNA		/AC=0 ?
	 JMP TT3	/YES, EXIT !
	DCA TTSAV
	TAD TTSAV
	DCA TTCHAR	/SAVE THE USERS AC, WE'LL NEED IT
	TAD TTSAV
	AND C177
	TAD (-11
	SNA		/TAB ?
	 JMP TTTAB	/YES, GO EXPAND IT
	IAC
	SZA CLA		/BACKSPACE ?
	 JMP TT0	/NOT BACKSPACE
	ACM1		/BACKSPACE, BACKUP POSITION COUNTER
	TAD TTCOUNT
	DCA TTCOUNT
	TAD TTBACK
TT0,	TAD TTSAV
	JMS TTOUT	/OUTPUT THE CHARACTER
TT1,	TAD TTFCHR
	SNA		/ANY FILLERS NEEDED ?
	 JMP TT2	/NO
	TAD TTCHAR	/COMPARE WITH CURRENT CHARACTER
	AND C177	/DON'T CONSIDER PARITY
	SNA CLA		/FILLERS NEEDED ?
	 JMP TTFLL	/MUST SUPPLY FILLERS
TT2,	TAD TTCHAR
	SMA CLA		/EXIT OR RETURN ?
	 JMP TT3
	JMS MONITOR
	   RETURN
TT3,	JMS MONITOR
	   EXIT
TTTAB,	TAD C240	/EXPAND A TAB ...
	JMS TTOUT	/OUTPUT A SPACE
	TAD TTCOUNT
	AND C7
	SZA CLA		/ARE WE AT A TAB-STOP ?
	 JMP TTTAB	/NOT YET
	JMP TT1		/DONE

TTFLL,	TAD TTFILL	/GET DISIRED NUMBER OF FILL CHAR'S
	DCA TTTMP
	JMS TTOUT	/OUTPUT A NULL
	ISZ TTTMP
	 JMP .-2	/MORE
	JMP TT2		/DONE
TTOUT,	0		/SINGLE CHARACTER OUTPUT ROUTINE
	DCA TTSAV
	TAD (-DGNTICK	/ONE SECOND TIMEOUT KEEPS TERMINAL GOING
	JMS MONITOR
	   WAIT
	   TTY1
	CLA CLL
	TAD TTSAV
	TLS		/THERE GOES THE CHARACTER
	AND C177	/STRIP PARITY BIT
	TAD (-40	/CODE .LT.240 ?
	SMA
	 JMP TTOU1	/NO, PRINTING CHARACTER
	TAD (40-12
	SZA		/LINEFEED ?
	 TAD M3		/(12-15
	SZA CLA		/WAS IT CR ?
	 JMP I TTOUT	/NO, DON'T COUNT NON-PRINTING CHARS
	JMP .+4		/YES, RESET POSITION COUNTER
TTOU1,	CLA		/
	TAD TTCOUNT	/
	IAC		/INCREMENT POSITION COUNTER
	DCA TTCOUNT
	JMP I TTOUT	/DONE
TTSAV,	0	/THE CHARACTER THAT WILL GO OUT
TTCHAR,	0	/THE CHARACTER WE GOT FROM THE CALLER
TTCOUNT,0	/THE CURRENT POSITION
TTBACK,	T1BACK-210
TTFCHR,	-T1CHAR	/MINUS CHARACTER THAT NEEDS FILLERS
TTFILL,	-T1FILL	/THE NUMBER OF FILLERS TO BE SUPPLIED
TTTMP,	0	/A TEMPORARY, END OF NONREENTRANT VERSION >
XLIST -LRESMOD-1&XLISTX
IFDEF KL8XX <		/REENTRANT VERSION OF KK-

/DEFINITION OF OFFSETS
KKEVNT=	0
KKESCP=	1

KK,	DCA ZTEM1
	JMS SETBASE	/INITIALISE BASE REGISTER
	TAD I BASE	/GET SLOT NUMBER
	DCA .+4
	TAD ZTEM1	/USE CALLERS AC AS TIMEOUT VALUE
	JMS MONITOR
	   WAIT
	   0		/WILL BECOME PROPER SLOT NUMBER
	TAD M2		/
	SNA		/TIMEOUT ?
	 JMP KK2	/YES, EXIT WITH AC4000
	TAD C2		/
	DCA ZTEM1	/NO, STORE THE CHARACTER
	JMS SETBASE	/RELOAD BASE REGISTER
	ISZ BASE	/LET BASE POINT TO ESCAPE CODE
	TAD I BASE	/GET MINUS ESCAPE FOR THIS TERMINAL
	TAD ZTEM1	/AND COMPARE
	SNA CLA		/EQUAL ?
	 TAD (233	/YES, TRANSLATE TO TRUE ESCAPE
	SNA		/
	 TAD ZTEM1	/NO, FETCH ORIGINAL CHARACTER
	SKP
KK2,	AC4000
TT3,	JMS MONITOR
	   EXIT		/ END OF REENTRANT VERSION >
IFNDEF KL8XX <		/NON-REENTRANT VERSION OF KK
KK,	JMS MONITOR
	   WAIT
	   KB1
	TAD M2		/
	SNA		/TIMEOUT ?
	 JMP KK2	/YES, TIMED OUT
	TAD C2		/
	DCA ZTEM1	/SAVE THE CHAR
	TAD KKESCP	/GET MINUS ESCAPE FOR THIS TERMINAL
	TAD ZTEM1	/AND COMPARE
	SNA CLA		/EQUAL ?
	 TAD (233	/YES, TRANSLATE TO TRUE ESCAPE
	SNA		/
	 TAD ZTEM1	/NO, FETCH ORIGINAL CHARACTER
	SKP
KK2,	AC4000
	JMS MONITOR
	   EXIT		/END OF NON-REENTRANT VERSION

KKESCP,	-T1ESCP		/(MAY BE CHANGED BY CB TASK) >

PAGE